Presence and availability are terms used to describe a present ability of an individual to communicate. Presence is an ability of an individual to communicate in real time, and availability is the willingness of an individual to communicate in real time. In communications, it is advantageous to know whether a potential recipient of a communication message is present and available, i.e., available to receive and respond to the message before initiating the transmission of the message. By making the presence and availability of individual users known before any communication is attempted, a realtime communications environment is facilitated that is more effective and less obtrusive than conventional communication mediums. Clearly, the communication message that is sent to an addressee that is known to be present and available is more likely to be received promptly than a conventional message. For example, often times, conventional telephone calls are forwarded to a person's voicemail and are never returned.
Instant messaging (IM) is one communication medium that employs presence and availability technology. An instant messaging network recognizes when a user is present” on the network. Accordingly, the network sends notification to other users (usually members of a “buddy list” or “contact list”) that are also logged on the network that the user is “present.” Further, instant messaging lets a user display custom status messages to his “buddies” online about the user's “availability.” For example, a user can specify his availability status as being “busy, not taking messages.” Therefore another user on the “buddy list” that is connected to the instant messaging network will be notified that although the user is present on the network, he is not available for receiving messages. Presence and availability information is most useful when an individual shares his or her online status with a trusted group of users. A communication message sent to someone who is readily present and available is less obtrusive, when the addressee has made himself or herself available to the communication.
An example of a traditional “closed” instant messaging (IM) architecture is shown in FIG. 1. The traditional IM architecture consists of a central IM server 105 connected to a number of individual clients (110, 115, 120, 125, 130, and 145) in a closed network. For example, to send an instant message from client 110 to client 145, IM client 110 first connects with an IM server 105 using a proprietary protocol. For example, AOL® and Yahoo!® use ICQ. Once the IM client 110 is connected to the IM server 105, the user logs on by entering a user name and password. The IM client 110 then sends the IM server 105 the connection information, such as the IP address and the number of the port assigned to the IM client and the name and IP address of everyone in the IM contact list associated with the IM client 110. An IM client may communicate directly with other IM clients if the IP addresses of these IM clients are known to the transmitting IM client. For convenience, the lines of communication between individual IM clients are not shown in FIG. 1.
The IM server 105 then creates a temporary file that contains the connection information for the IM client 110 and for each IM client 115, 120, 125, 130, 145. Once the temporary files have been created, the IM server 105 checks the network to determine whether any IM client identified by the contact list associated with IM client 110 is currently logged into the system. If the IM server 105 finds any of the contacts logged onto the network, the IM server 105 sends a message back to the IM client 110 with the connection information for each IM client 115, 120, 125, 130, 145 currently logged onto the network. When the IM client 110 receives the connection information, the presence status of that particular IM client 115, 120, 125, 130, 145 is updated to “Online,” for example. The presence status is displayed to the user. At this point the user may select any IM client 115, 120, 125, 130, 145 that is registered “Online,” at which point a dialog box will appear in which the user may enter text. Because the IM client 110 knows the IP address and port number of the IM client 145, the message is sent directly to the recipient IM client 145. The IM client 145 then receives the instant message and can respond. Once the IM session is complete the dialog box is closed, and the IM client 110 goes offline and sends a message to the IM server 105 terminating the session. The IM server 105, in response to acknowledging that the IM client 110 has logged off, generates a message to each of the IM clients 115, 120, 145 on the client list of IM client 110 indicating that IM client 110 is logged off the network.
Jabber is an example of an “open” instant messaging architecture. Jabber, available from Jabber, Inc. of Denver, Colo., includes an IM system focusing on providing IM access to a user. Jabber includes an Extensible Markup Language (XML) open source server software that was developed by a community of developers over the Internet. Jabber allows communication among applications and systems across platforms. Developers write additional modules to submit them back for possible incorporation into the Jabber software.
A block diagram illustrating a prior art IM network that uses Jabber interoperable XML-based network architecture is shown in FIG. 2. Jabber is a real-time communications platform based on open protocols whose architecture is based on the well-known electronic mail system. Because Jabber is based on the email system, the Jabber architecture contains distributed network servers, called Jabber servers 215-217 and clients, known as Jabber clients 200-205 that receive and send messages to Jabber clients 200-205 connected to other Jabber server 215-217 on the Internet. However, unlike typical email systems, which are store and forward systems, Jabber delivers messages in real time because the Jabber server 215-217 knows when a particular Jabber client 200-205 is online and available. The Jabber architecture is based on client-server architecture and not on a client-to-client architecture, as are most IM systems. Messages from Jabber client 200 to Jabber client 201 must pass through the Jabber server 215. Each Jabber client 200-205 is attached to a local Jabber server 215-217. Each local Jabber server 215-217 receives information from one Jabber client 200-205 and transfers the information to another Jabber client 200-205 along with presence and availability information. Each local Jabber server 215-217 functions independently from one another, and can communicate with any other Jabber server 215-217 that is connected to the Internet as long as it has been identified, and predisposed to do so ahead of time. Each local Jabber server 215-217 performs two functions: listening for and communicating directly with Jabber client applications 200-205, and communicating with other Jabber servers 215-217. Each local Jabber server 215-217 consists of multiple components that separately handle individual functions with the Jabber system.
In many instant messaging communications, if a user is not present to receive an instant message, the instant message can still be sent and queued in the IM server 105 or Jabber server 215-217 that is servicing the IM client of the user. The IM server will hold the message until the user is present again on the instant messaging network. In this manner, the instant message is delivered to the user as soon as the user is present on the instant messaging network.
Today's instant messaging services mostly focus on the storing of text instant messages in a queue for later delivery to the user once the user becomes present on the network. However, today's service typically does not allow for non-text instant messages to be stored in a queue for later immediate delivery. Thus, a heretofore unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.